package util.estatisticas.metricas;

import java.util.ArrayList;

import util.Util;
import util.graficos.GraficoTrocasMalSucedidas;
import entidades.Peer;

public class TrocasMalSucedidas {
	
	private GraficoTrocasMalSucedidas graficoTrocasMalSucedidas;
	
	public TrocasMalSucedidas() {
		if (Util.PLOTAR_GRAFICOS) {
			graficoTrocasMalSucedidas = new GraficoTrocasMalSucedidas();
		}
	}
	
	public void calculaXi(final int rodada, final ArrayList<Peer> peers) {
		EstimadorMedia estimadorMedia = new EstimadorMedia();
		EstimadorVariancia estimadorVariancia = new EstimadorVariancia();
		
		for (Peer p : peers) {
			double trocasMalSucedidas = p.getTrocasComPeerMalSucedidas();
			double trocas = p.getTrocasComPeer();
			
			if (trocas <= 0) continue;
			
			double razao = trocasMalSucedidas / trocas;			

			estimadorMedia.atualiza(razao);
			estimadorVariancia.atualiza(razao);
		}
				
		if (Util.PLOTAR_GRAFICOS) {
			graficoTrocasMalSucedidas.adicionaRodada(estimadorMedia.getEstimador(), estimadorVariancia.getEstimador(), rodada);
		}
		
	}

	public void plot() {
		if (Util.PLOTAR_GRAFICOS) {
			this.graficoTrocasMalSucedidas.plot();
		}
	}
}

